<?php
/**
 * @author		João Batista Neto
 * @brief		Objetos que representam cada tipo do retorno da API
 * @package		dso.buscape.result.type
 */

require_once 'dso/buscape/result/type/BuscapeLeaf.php';

/**
 * @brief		Detalhes
 * @details		Detalhes da resposta da requisição
 * @class		BuscapeResultDetails
 * @ingroup		Types
 */
class BuscapeResultDetails extends BuscapeLeaf {
	/**
	 * @brief	ID da aplicação
	 * @var		string
	 */
	private $applicationID;

	/**
	 * @brief	URL da aplicação
	 * @var		string
	 */
	private $applicationPath;

	/**
	 * @brief	Versão da aplicação
	 * @var		string
	 */
	private $applicationVersion;

	/**
	 * @brief	Código da resposta
	 * @var		integer
	 */
	private $code;

	/**
	 * @brief	Data/Hora da requisição
	 * @var		string
	 */
	private $date;

	/**
	 * @brief	Tempo de execução da requisição em milisegundos
	 * @var		integer
	 */
	private $elapsedTime;

	/**
	 * @brief	Mensagem da resposta
	 * @var		string
	 */
	private $message;

	/**
	 * @brief	Status da resposta
	 * @var		string
	 */
	private $status;

	/**
	 * @brief	ID da aplicação
	 * @return	string
	 */
	public function getApplicationId() {
		return $this->applicationId;
	}

	/**
	 * @brief	URL da aplicação
	 * @return	string
	 */
	public function getApplicationPath() {
		return $this->applicationPath;
	}

	/**
	 * @brief	Versão da aplicação
	 * @return	string
	 */
	public function getApplicationVersion() {
		return $this->applicationVersion;
	}

	/**
	 * @brief	Código da resposta
	 * @return	integer
	 */
	public function getCode() {
		return $this->code;
	}

	/**
	 * @brief	Data/Hora da requisição
	 * @return	string
	 */
	public function getDate() {
		return $this->date;
	}

	/**
	 * @brief	Tempo de execução da requisição em milisegundos
	 * @return	integer
	 */
	public function getElapsedTime() {
		return $this->elapsedTime;
	}

	/**
	 * @brief	Mensagem da resposta
	 * @return	string
	 */
	public function getMessage() {
		return $this->message;
	}

	/**
	 * @brief	Status da resposta
	 * @return	string
	 */
	public function getStatus() {
		return $this->status;
	}

	/**
	 * @brief	Cria uma instância do objeto com os argumentos passados
	 * @param	$args array Lista de argumentos que serão utilizados para criação do objeto
	 * @return	BuscapeResultDetails
	 */
	public static function createInstance( array $args ){
		$resultDetails = new BuscapeResultDetails();

		foreach ( $args as $property => $value ){
			$resultDetails->$property = $value;
		}

		return $resultDetails;
	}
}